/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
 *INTERFACE QUE O SERVIDOR IMPLEMENTA POR CONTA DO RMI
 * @author Bruno Vicente
 */
public interface Gerenciador extends Remote {

    /**
     * Recebe um roteador para ser adicionado no servidor
     * @param ip da maquina que quer pedir para ser adicionado no servidor
     * @return Nome do roteador
     * @throws RemoteException 
     */
    public String receber_roteador(String ip) throws RemoteException;

    /**
     * Recebe um host para adicionar ao servidor
     * @param ip da maquina
     * @return o nome que o servidor irá inserir
     * @throws RemoteException 
     */
    public String receber_host(String ip) throws RemoteException;
    
    /**
     * Recebe informação para onde um determinado pacote está e para onde o mesmo foi enviado.
     * @param name Nome do Roteador em que o pacote está.
     * @param destino Nome de destino ao qual o pacote foi enviado.
     * @param roteador @True se foi enviado para um roteador.
     * @False sefoi enviado para um host.
     * @throws RemoteException
     */
    public void receberInformação(String name,String destino, Boolean roteador) throws RemoteException;
    /**
     * Informa que um pacote já andou muito pela rede e não pode percorrer mais na rede.
     * @param name Nome do roteador no qual o pacote estourou o tempo.
     * @throws RemoteException
     */
    public void estourouTtl(String name) throws RemoteException;
    /**
     * Atualiza o caminho ao qual um pacote passou deste a origem até o destino.
     * @param origem Nome do no que esta com o pacote.
     * @param destino Nome do nó ao qual o pacote foi enviado.
     * @throws RemoteException
     */
    public void atualizarCaminho(String origem, String destino)throws RemoteException;
    
}
